3851
6799
Dette spørsmålet har allerede svar her:
Snu en streng i Python
(29 svar)
Stengt for 4 år siden.
Jeg prøver å snu en streng og bruker koden nedenfor, men den resulterende omvendte listeverdien er Ingen.
Koden:
str_a = 'Dette er rørt'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = ''. bli med (rev_word)
Den returnerer TypeError. Hvorfor? 
.reverse () returnerer Ingen. Derfor bør du ikke tildele den til en variabel.
Bruk dette i stedet:
stra = 'Dette er en streng'
revword = stra.split ()
revword.reverse ()
revword = ''. bli med (revword)
Jeg har kjørt koden på IDEOne for deg slik at du kan se utdataene. (Legg også merke til at utdataene er stringaisDette; det kan være lurt å bruke '' .join (revword), med et mellomrom, i stedet.)
Vær også oppmerksom på at metoden du har oppgitt bare reverserer ordene, ikke teksten. @ ron.rothman ga en lenke som beskriver hvordan du snur en streng i sin helhet.
|
Dette er min personlige favorittmåte å reversere en streng:
stra = "Dette er en streng"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
eller, hvis du vil reversere ordrekkefølgen:
revword = "" .join (stra.split () [:: - 1])
print (revword) # "streng a er dette"
:)
|
Ulike reverseringer på en streng:
instring = 'Dette er en streng'
reversert streng = instring [:: - 1]
print reversedstring # gnirts a si sihT
wordsreversed = '' .føy til (ord [:: - 1] for ord i instring.split ())
skriv ord omvendt # sihT si a gnirts
revwordorder = '' .join (ord for ord i instring.split () [:: - 1])
print revwordorder # string a er Dette
revwordandorder = '' .føy til (ord [:: - 1] for ord i instring.split () [:: - 1])
skriv ut revordordorder # gnirts a si sihT
|
For fremtidig referanse når et objekt har en metode som [] .omvendt () utfører det vanligvis den handlingen på objektet (dvs. listen er sortert og returnerer ingenting, Ingen) i motsetning til innebygde funksjoner som sortert som utfører en handling på et objekt og returnerer en verdi (dvs. den sorterte listen)
|
>>> s = 'dette er en streng'
>>> s [:: - 1]
'gnirts a si siht'
>>> ''. bli med (reversert (er))
'gnirts a si siht'
|
For loop gjentar strengen fra slutten (siste bokstav) til start (første bokstav)
>>> s = 'Du kan også prøve dette:]'
>>> rev = ''
>>> for i innen rekkevidde (len (s) - 1, -1, -1):
... rev + = s [i]
>>> rev
']: oot siht yrt nac uoY'
|
Basert på kommentarer og andre svar:
str_a = 'dette er en streng'
rev_word = ''. join (reversert (str_a.split ()))
Metodekjetting fungerer tross alt i Python ...
|
List revers kan gjøres på mer enn én måte. Som nevnt i forrige svar er to veldig fremtredende, en med revers () -funksjon og to med snittfunksjon. Jeg gir litt innsikt i hvilken vi bør foretrekke.
Vi bør alltid bruke revers () -funksjonen for å reversere en Python-liste. To grunner, en reversering på stedet og to raskere enn andre.
Jeg har noen tall som støtter svaret mitt,
I [15]: len (l)
Ut [15]: 1000
I [16]:% timeit -n1 l.revers ()
1 sløyfer, best av 3: 7,87 µs per sløyfe
I [17]:% timeit -n1 l [:: - 1]
1 sløyfer, best av 3: 10 µs per sløyfe
For 1000 heltalliste, fungerte revers () -funksjonen bedre sammenlignet med kutting.
|
Er ikke svaret du leter etter? Bla gjennom andre spørsmål merket python eller still ditt eget spørsmål.